package edu.software.PBL_Management_System.service;

import org.springframework.stereotype.Service;
import edu.software.PBL_Management_System.dto.ChatRequest;
import reactor.core.publisher.Flux;

/**
 * Dify API 服务类
 * 负责与Dify智能体API进行通信，支持普通模式和流式模式
 */
@Service
public interface DifyService {

    /**
     * 发送消息到Dify（阻塞模式）
     * 等待完整响应后返回结果
     *
     * @param request 聊天请求对象
     * @return String Dify返回的完整响应
     * @throws RuntimeException 当API调用失败时抛出异常
     */
    String sendMessage(ChatRequest request);

    /**
     * 发送消息到Dify（流式模式）
     * 实时接收并转发Dify的流式响应
     *
     * @param request 聊天请求对象
     * @return Flux<String> 流式响应数据流
     */
    Flux<String> sendMessageStream(ChatRequest request);
}